import axios from 'axios';

export default {
/**
 * 发送POST请求的异步函数
 * 该函数主要用于处理文本数据，生成语音音频，并创建相应的音频源
 * @param {Object} data 包含请求相关数据的对象
 * @returns {Object} 返回处理后的数据对象，包括音频源和音频初始化状态
 */
  async sendPostRequestApi(data) {
    // 打印接收到的数据，便于调试
    // console.log("sendPostRequest001打印数据：", data)
    
    // 初始化返回数据对象
    let returnD = data
    returnD.audioInit = false
    returnD.isAudioStart = { id: data.msg_i, is: false }
    
    // 如果是整体执行模式
    if (data.all) {
      // 如果是第一次执行
      if (data.to_i === -1) {
        // 初始化音频状态
        returnD.audioInit = true
        data.to_i++
      }
      // 分割消息内容，以便逐段处理
      let msgArr = data.msg_content.split(data.toSpeechtest)
      // console.log("currentMessages", data.msg_content,data.toSpeechtest)
      // console.log("toSpeechKey", data.to_i, msgArr)
      
      // 更新文本内容
      data.text = msgArr[data.to_i]
      // 如果没有文本内容，则返回false
      if (!data.text) {
        return false
      }
    }
    // 如果文本内容为空，则打印错误并返回false
    if (!data.text.length) {
      console.error("text无数据")
      return false
    }
    
    // 创建包含文本和音频源的对象
    let toSArr = { id: data.to_i, src: '', text: data.text }
    returnD.audioSrc = toSArr
    
    try {
      // 处理文本，替换特殊字符和空格为逗号
      let modifiedText = data.text.replace(/\*/g, ',').replace(/\|/g, ',').replace(/-/g, ',')
      modifiedText = modifiedText.replace(/\s+/g, ' ').replace(/ {2,}/g, ', ')
      
      // 准备TTS请求数据
      let ttsData = {
        "input": modifiedText + "。",
        "voice": "" + data.voice,
        "prompt": data.prompt,
        "language": "zh_us",
        "model": "emoti-voice",
        "response_format": "mp3",
        "speed": 1
      }
      
      // 发送POST请求获取音频数据
      const response = await axios.post('/ttsapi/v1/audio/speech', ttsData, {
        headers: {
          'accept': 'application/json',
          'Content-Type': 'application/json',
        },
        responseType: 'blob',
      })
      
      // 创建Blob对象并生成音频源URL
      const audioBlob = new Blob([response.data], { type: 'audio/mpeg' })
      let blobSrc = URL.createObjectURL(audioBlob)
      
      // 如果成功创建音频源
      if (blobSrc) {
        returnD.audioSrc.src = blobSrc
        
        // 根据条件设置音频播放状态
        // console.log("根据条件设置音频播放状态:",data.to_i,this.audioAutoKey,this.isAutoAudio)
        if (data.to_i === 0 && !this.audioAutoKey && !this.isAutoAudio) {
          returnD.isAudioStart.is = true
          returnD.audioStart = true
        }
      }
      // 返回处理后的数据对象
      return returnD
    } catch (error) {
      // 如果发生错误，打印错误信息
      console.error("发送POST请求时出错:", error.response.status)
    }
  }
  
};
